#ifndef GAMEMODEL_H
#define GAMEMODEL_H
#include <vector>
//选择游戏模式，人机还是对战
enum GameType{
    MAN,//对战模式
    AI  //人机模式
};
enum GameStatus{
    PLAYING,
    WIN,
    DEAD
};
//棋盘的大小
const int BOARD_GRAD_SIZE = 16;
const int MARGIN = 32; //棋盘边缘的空间
const int CHESS_RADIUS = 14; //棋子的半径大小
const int MARK_SIZE = 8; //落子标记的大小
const int BLOCK_SIZE = 32; //格子的大小
const int POS_OFFSET = BLOCK_SIZE*0.4; //鼠标点击的模糊距离上限
const int AI_THINK_TIME = 500; //电脑的下棋思考時間
class GameModel{
public:
    GameModel();
public:
    //存储当前游戏棋盘和棋子的情況，空白是0，黑子是1，白子就是-1
    std::vector<std::vector<int>> gameMapVec;
    //存储每一个格子的记分情況，作為电脑下棋的依托
    std::vector<std::vector<int>> scoreMapVec;
    //标记下棋的一方，true指的是黑棋
    bool playerFlag;
    GameType gameType; //游戏的模式是人机还是对战
    GameStatus gameStatus; //游戏的状态
    void startGame(GameType type);
    void actionByPerson(int row, int col);
    void updateGameMap(int row, int col);
    bool isWin(int row,int col);
    void calculateScore(); //对每一个格子进行评分
    void actionByAI(int &clickRow,int &clickCol); //电脑下棋
};
#endif // GAMEMODEL_H
